from message.message_action import *
from message.talk_to_user import *
import chat as chat
from message.function.RemindMe import *
from message.function.Conversation import *
from random import random

'''
private_msg 是对私聊消息的回复

group_msg 是对群聊消息的回复
    增加了管理员qq可以直接在群聊中控制 (admin_qq)

    
    增加了闲聊模式
        我想了想决定偷懒把加载放在这里

'''

welcome_list = ["欢迎欢迎，新朋友！[CQ:face,id=144] 很高兴你加入我们的大家庭，一起度过美好的时光吧！[CQ:face,id=66]",
"嗨！新伙伴！[CQ:face,id=43] 你是我们群里的一颗闪亮的星星，我们迫不及待要认识你！[CQ:face,id=160]",
"欢迎来到我们的小天地！[CQ:face,id=63] 希望你在这里找到无限的快乐和友情！[CQ:face,id=99]",
"新成员报到！[CQ:face,id=144] 欢迎你的加入，让我们一起创造美好回忆吧！[CQ:face,id=205]",
"热烈欢迎新朋友！[CQ:face,id=193] 有问题或需要帮助，随时都可以提出哦！[CQ:face,id=161][CQ:face,id=161]",
"你是幸运星！[CQ:face,id=161] 欢迎来到这个温馨的大家庭，我们一起笑、一起玩！[CQ:face,id=74]",
"欢迎新伙伴！[CQ:face,id=164] 一起分享快乐，创造美好回忆！[CQ:face,id=205]",
"新的一天，新的朋友！[CQ:face,id=74] 欢迎你的到来，让我们共同度过愉快的时光！[CQ:face,id=207]",
"嘿嘿，欢迎新宝贝！[CQ:face,id=202] 你的加入让这个群更加可爱了！[CQ:face,id=66]",
"欢迎来到可爱之家！[CQ:face,id=203] 我们是一群萌萌哒小伙伴，现在有你更加可爱啦！[CQ:face,id=207][CQ:face,id=211]",
"欢迎新小天使！[CQ:face,id=201][CQ:face,id=201] 你的到来如同一阵清风，让我们的群变得更加可爱和有趣！[CQ:face,id=193]",
"嗨，新可爱小伙伴！[CQ:face,id=219] 你就是这个群的甜心，让我们感到无比幸福！[CQ:face,id=221]",
"欢迎新精灵宝宝！[CQ:face,id=203][CQ:face,id=203] 我们群里的每个人都变得更加可爱，因为有了你！[CQ:face,id=74]",
"新成员报到，好可爱啊！[CQ:face,id=144][CQ:face,id=144] 我们迫不及待要一起分享笑声和快乐啦！[CQ:face,id=74]",
"欢迎新甜点小厨师！[CQ:face,id=219][CQ:face,id=219] 你的加入让我们的群多了一份甜蜜和可爱！[CQ:face,id=214]",
"新伙伴加入，好开心！[CQ:face,id=74][CQ:face,id=203] 你就是我们群里的阳光，让大家都变得可爱！[CQ:face,id=219]",
"欢迎新成员！[CQ:face,id=144] 我们这里有各种各样的人，各种各样的话题，期待你为我们增添多样性！[CQ:face,id=219]",
"新面孔来啦！[CQ:face,id=164] 无论你是哪里来的，我们都热烈欢迎你的多样性和独特之处！[CQ:face,id=207]",
"嘿，新伙伴！[CQ:face,id=219] 无论你的兴趣爱好是什么，这里都有人和你一样，欢迎加入我们的大家庭！[CQ:face,id=99]",
"欢迎新朋友！[CQ:face,id=164] 我们群里有各种各样的人才，无论你擅长什么，都可以在这里找到志同道合的伙伴！[CQ:face,id=207]",
"新成员报到！[CQ:face,id=144] 无论你的背景如何，我们都在这里共同追求多样性和包容，一起做更好的自己！[CQ:face,id=147][CQ:face,id=147]",
"欢迎新面孔！[CQ:face,id=190] 这里是一个多元文化的聚集地，期待你与我们分享你的故事和文化！[CQ:face,id=190]",
"新伙伴加入，让我们更加多彩！[CQ:face,id=147] 无论你的爱好是什么，都可以在这里找到有趣的话题和活动！[CQ:face,id=147]",
"热烈欢迎新朋友！[CQ:face,id=190][CQ:face,id=190] 我们群的特点就是多样性，让我们共同创造丰富多彩的群体体验吧！[CQ:face,id=147][CQ:face,id=147]",
                ]


def read_file():
    data = []
    with open("data/talk_data/specialQA.txt", 'r', encoding='UTF-8') as f:
        for line in f.read().splitlines():
            temp = line.split("|")
            data.append(temp)
    return data

SPECIAL_ANSWER = []
SPECIAL_QUESTION = []

class MsgTalker:
    def __init__(self, ws, configuration):
        self.ws = ws
        self.talk_data = read_file()
        self.chat_group = False
        self.chat_private = False
        self.talk = Talk(chat, ws)
        self.remind = Remind(configuration, ws)
        self.bot_set = configuration["bot_set"]
        self.detect_statement = configuration["detect_statement"]
        for line in self.talk_data:
            SPECIAL_QUESTION.append(line[0])
            SPECIAL_ANSWER.append(line[1])

    def private_msg(self, rev):
        if rev["sub_type"] != "friend":
            return send_message('你还不是我的好友呀', rev['user_id'], self.ws, "private")
        msg = rev['raw_message']
        if "+" in msg:
             SPECIAL_QUESTION.append(msg.split("+")[0])
             SPECIAL_ANSWER.append(msg.split("+")[1])
             add_data(msg)

        if SPECIAL_QUESTION.count(rev['raw_message']):
            text = SPECIAL_ANSWER[SPECIAL_QUESTION.index(rev['raw_message'])]
            return send_message(text, rev["user_id"], self.ws, "private")

        if rev["user_id"] in self.bot_set["admin_qq"]:
            if msg in self.detect_statement["chat_private_open"]:
                self.chat_private = True
                return send_message("我要开始犯傻说胡话啦~", rev["user_id"], self.ws, "private")
            elif msg in self.detect_statement["chat_private_stop"]:
                self.chat_private = False
                return send_message("好吧，我闭嘴", rev["user_id"], self.ws, "private")
            else:
                pass
        else:
            pass


        if msg[:2] == "每天":
            res = self.remind.remind_everyday(msg, rev['user_id'])
            if res[0]:
                return send_message("好的，苏苏知道了,这是你的这个计划的id：" + res[1] + " ,用它来取消定时提醒", rev["user_id"], self.ws, "private")
        else:
            if self.remind.remind_do(rev['raw_message'], "", rev["user_id"]):
                return send_message("好的，苏苏知道了", rev["user_id"], self.ws, "private")

        # 闲聊
        res = self.talk.talk_to_user(rev, self.chat_private)
        if res is not False:
            return send_message(res, rev["user_id"], self.ws, "private")
        

    def group_msg(self, rev):

        if SPECIAL_QUESTION.count(rev['raw_message']):
            text = SPECIAL_ANSWER[SPECIAL_QUESTION.index(rev['raw_message'])]
            return send_message(text, rev["group_id"], self.ws, "group")

        # 查看是否有@自己的消息
        if "[CQ:at,qq={}]".format(self.bot_set["self_qq"]) in rev["raw_message"]:
            try:
                rev['raw_message'] = rev['raw_message'].split("] ")[1]
            except Exception as e:
                pass

            if "+" in rev['raw_message']:
                SPECIAL_QUESTION.append(rev['raw_message'].split("+")[0])
                SPECIAL_ANSWER.append(rev['raw_message'].split("+")[1])
                add_data(rev['raw_message'])
            if rev['raw_message'] in self.detect_statement["chat_group_open"]:
                self.chat_group = True
                return send_message("我要开始犯傻说胡话啦~", rev["group_id"], self.ws, "group")
            elif rev['raw_message'] in self.detect_statement["chat_group_stop"]:
                self.chat_group = False
                return send_message("好吧，我闭嘴", rev["group_id"], self.ws, "group")
            else:
                pass

            if self.remind.remind_do(rev['raw_message'], rev["group_id"], rev["user_id"]):
                return send_message("好的，苏苏知道了", rev["group_id"], self.ws, "group")
            else:
                pass

            # 管理员设置的一些远程命令
            if rev['user_id'] == self.bot_set["admin_qq"]:
                
                if rev['raw_message'] == '重启':
                    pass
                if rev['raw_message'] == '关闭':
                    pass
            
            return send_message(self.talk.talk_to_group_user(rev, self.chat_group), rev["group_id"], self.ws, "group")

        
        for str in self.bot_set["ban_words"]:
            if  str in rev['raw_message']:
                if self.bot_set["ban_action"] == "禁言":
                    detect_ban(rev["user_id"], rev["group_id"], self.ws)
                if self.bot_set["ban_action"] == "撤回":
                    delete_msg(rev["message_id"], self.ws)
        if  self.chat_group:
            return send_message(self.talk.talk_to_group_user(rev,self.chat_group), rev["group_id"], self.ws, "group")

    def add_friends(self, rev):

        return send_message(self.talk.add_friends(rev), rev["user_id"], self.ws, "friends")

    def group_increase(self, rev):
        res = "[CQ:at,qq={}]".format(rev['user_id']) + ' ' + random.choice(welcome_list)
        return send_message(res, rev["group_id"], self.ws, "group")

    def group_decrease(self, rev):
        res = "[CQ:at,qq={}]".format(rev['user_id']) + ' ' + self.bot_set["group_decrease_msg"]
        return send_message(res, rev["group_id"], self.ws, "group")
